<?php

namespace Common\Model;
use Org\Util\SString;

class UserModel extends AllModel{
    /**
     * 生成加密密码的随机字符串
     * 
     * @return string 生成的随机字符串
     */
    public function create_rand_code(){
        return (new SString())->randString(6, 0,'0123456789.');
    }
    
    /**
     * 获取用户详情信息
     *      此操作关联user_info、user_group两个表
     * @param type $id
     * @param type $cache
     * @return type
     */
    public function get_info($id = 0, $cache = false) {
        $info = parent::get_info($id, $cache);// 获取用户基本信息
        $u_info = (new UserInfoModel())->get_info($id,$cache);// 获取用户详情信息
        // 删除一些用户不需要知道的信息
        if(empty($u_info)){
            $u_info = array();
        }
        // 获取权限组的一些信息
        $group = new UserGroupModel();
        $info = array_merge($info,$u_info);
        $info['admin_group_val'] = array();
        if($info['admin_group']){
            // 如果拥有后台权限
            $info['admin_group_val'] = $group->get_group_content($info['admin_group'],$info['admin_group_leader']);
        }
        $info['home_group_val'] = array();
        if($info['home_group']){
            // 如果拥有后台权限
            $info['admin_group_val'] = $group->get_group_content($info['home_group'],$info['home_group_leader']);
        }
        $info['api_group_val'] = array();
        if($info['api_group']){
            // 如果拥有后台权限
            $info['admin_group_val'] = $group->get_group_content($info['api_group_val'],$info['api_group_leader']);
        }
        // 先赋予home_group 权限
        $info['home_group'] || $info['home_group'] = $info['group_1'];
        $info['admin_group'] || $info['admin_group'] = $info['group_2'];
        $info['api_group'] || $info['api_group'] = $info['group_3'];
        // 再赋予group权限
        $info['group_1'] || $info['group_1'] = $info['home_group'];
        $info['group_2'] || $info['group_2'] = $info['admin_group'];
        $info['group_3'] || $info['group_3'] = $info['api_group'];
        return $info;
    }
    
    /**
     * 注册用户，此处的注册关联到的user_info表
     * 
     * @param array $post post提交的值
     * @return int 创建的用户id
     */
    public function create_info($post = array()) {
        $uid = parent::create_info($post);
        $post['id'] = $uid;
        $user_info = new UserInfoModel();
        $user_info->create_info($post);
        return $uid;
    }
    
    /**
     * 登录用户
     * 
     * @param string $username 用户名
     * @param string $password 密码
     * @return boolean 是否登录成功
     */
    public function login($username = '',$password = ''){
        $info = $this->where(array('username'=>$username))->select();
        foreach($info as $v){
            if(pass($password,$v['rand_code']) == $v['password']){
                return $this->get_info($v['id'], TRUE);
            }
        }
        return FALSE;
    }
}